home *** CD-ROM | disk | FTP | other *** search
- #ifndef _MAILBOX_H
- #define _MAILBOX_H
- /* Defines for the ax.25 mailbox facility */
- #define NUMMBX 10 /* max number of mailbox sessions */
- #ifndef _TIMER_H
- #include "timer.h"
- #endif
- #ifndef _AX25_h
- #include "ax25.h"
- #endif
- #ifndef _CONFIG_H
- #include "config.h"
- #endif
-
- /* a mailbox entry */
- struct let {
- long start;
- long size;
- int status;
- };
-
- #define MAXPWDLEN 30
- #define MBXLINE 128 /* max length of line */
- struct mbx {
- int state ; /* mailbox state */
- #define MBX_LOGIN 0 /* trying to log in */
- #define MBX_CMD 1 /* in command mode */
- #define MBX_SUBJ 2 /* waiting for a subject line */
- #define MBX_DATA 3 /* collecting the message */
- #define MBX_REVFWD 4 /* reverse forwarding in progress */
- #define MBX_TRYING 5 /* pending forwarding connection */
- #define MBX_FORWARD 6 /* established forwarding connection */
- #define MBX_GATEWAY 7 /* gatewaying somewhere */
- #define MBX_READ 8 /* reading a message */
- #define MBX_UPLOAD 9 /* uploading a file */
- #define MBX_DOWNLOAD 10 /* downloading a file */
- #define MBX_CONVERS 11 /* Using convers mode */
- #define MBX_CHAT 12 /* Chatting with sysop */
- #define MBX_WHAT 13 /* Listing files */
- #define MBX_SYSOPTRY 14 /* Trying sysop */
- #define MBX_SYSOP 15 /* Is sysop */
- int family; /* Type of incoming connection */
- char name[20] ; /* Name of remote station */
- char call[AXALEN]; /* User call in shifted form, if applicable*/
- char *to ; /* To-address in form user or user@host */
- char *origto ; /* Original To-address, if rewritten */
- char *tofrom ; /* Optional <from in to-address */
- char *origbbs ; /* Original bbs, if tracing R: lines */
- char *tomsgid ; /* Optional $msgid in to-address */
- char *subject ; /* Message subject */
- char *date ; /* Date of the message */
- FILE *tfile ; /* Temporary file for message, or */
- /* forwarding file. */
- FILE *tfp; /* Temporary file when reading R: headers */
- char line[MBXLINE+1] ; /* Room for null at end */
- int mbnum ; /* which mailbox session is this? */
- int sid ; /* Characteristics indicated by the SID */
- /* banner of the attaching station. If */
- /* no SID was sent, this is zero. If an */
- /* SID of any kind was received, it is */
- /* assumed that the station supports */
- /* abbreviated mail forwarding mode. */
- #define MBX_SID 0x01 /* Got any SID */
- #define MBX_RLI_SID 0x02 /* This is an RLI BBS, disconnect after F> */
- #define MBX_HIER_SID 0x04 /* The BBS supports "hierarchical routing */
- /* designators." */
- /* Space here for others, currently not of */
- /* interest to us. */
- #define MBX_EXPERT 0x08 /* expert user status */
- #define MBX_AREA 0x10 /* show area in prompt */
- #define MBX_NRID 0x20 /* use netrom ident */
- #define MBX_LL 0x80 /* LAN-LINK system */
- char stype ; /* BBS send command type (B,P,T, etc.) */
- int type ; /* Type of session when invoking "chat" */
- int user; /* User linkage area */
- char escape; /* Escape character */
- int privs; /* Privileges (taken from Ftpusers file) */
- #define AX25_CMD 8 /* AX.25 gateway operation allowed */
- #define TELNET_CMD 16 /* Telnet gateway operation allowed */
- #define NETROM_CMD 32 /* NET/ROM gateway operation allowed */
- #define SYSOP_CMD 64 /* Remote sysop access allowed */
- #define EXCLUDED_CMD 128 /* This user is banned from the BBS */
- /* 256 and 512 are used in PPP*/
- #define NO_SENDCMD 1024 /*Disallow send command*/
- #define NO_READCMD 2048 /*Disallow read command*/
- #define NO_3PARTY 4096 /*Disallow third-party mail*/
- #define IS_BBS 8192 /*This user is a bbs*/
- #define IS_EXPERT 16384 /*This user is an expert*/
- #define NO_CONVERS 32768 /*Disallow convers command */
-
- char *path; /* Directory path */
- char *startmsg; /* Message to be sent at connect through any
- /* of the gateways */
- int current; /* the current message number */
- int nmsgs; /* number of messages in this mail box */
- int newmsgs; /* number of new messages in mail box */
- int change; /* mail file changed */
- int anyread; /* true if any message has been read */
- FILE *mfile; /* mail data file pointer */
- char area[64]; /* name of current mail area */
- int isarea; /* is the current mail area private or public ? */
- int morerows; /* Number of lines before -more- prompt */
- int update; /* Update the user preferences */
- /* Next two are used by userlog code - WG7J */
- long lastread; /* number of last read message in area */
- long newlastread; /* id of new last listed message in area */
- long mboxsize; /* size of mailbox when opened */
- long mysize; /* size of my private mailbox */
- struct let *mbox;
- struct timer tdisc; /* Inactivity timeout timer - WG7J */
- char *stdinbuf; /* the stdio buffer for the mail file */
- char *stdoutbuf; /* the stdio file io buffer for the temp file */
- } ;
- #define NULLMBX (struct mbx *)0
-
- /* Structure used for automatic flushing of gateway sockets */
- struct gwalarm {
- int s1;
- int s2;
- struct timer t;
- };
-
- /* In mailbox.c */
- extern struct mbx *Mbox[NUMMBX] ;
- extern char Noperm[];
- extern char Nosock[];
- extern void (*Listusers) __ARGS((int s));
- extern int ThirdParty;
- extern int Mtrace;
-
- int dombescape __ARGS((int argc,char *argv[],void *p));
- int mbxrecvline __ARGS((struct mbx *m));
- int gw_connect __ARGS((struct mbx *m,int s,struct sockaddr *fsocket,int len));
-
- void mbx_incom __ARGS((int s,void *t,void *p));
- int domboxdisplay __ARGS((int argc,char *argv[],void *p));
- struct mbx *newmbx __ARGS((void));
- void exitbbs __ARGS((struct mbx *m));
- int domboxbye __ARGS((int argc,char *argv[],void *p));
- int mbx_parse __ARGS((struct mbx *m));
- void changearea __ARGS((struct mbx *m,char *area));
- char *rewrite_address __ARGS((char *addr));
- void listusers __ARGS((int s));
-
- /* In forward.c: */
- int dorevfwd __ARGS((int argc,char *argv[],void *p));
- int dombtimer __ARGS((int argc,char *argv[],void *p));
- int dombkick __ARGS((int argc,char *argv[],void *p));
-
- /* In tipmail.c */
- extern unsigned Tiptimeout;
-
- #endif /* _MAILBOX_H */
-